perm filename LEVEL2.SAI[4,ALS]1 blob
sn#055604 filedate 1973-07-31 generic text, type T, neo UTF8
00010 PROCEDURE LEVEL2;
00020 BEGIN "LEV"
00030
00040 INTEGER I,J,K,L;
00050 INTEGER BSTCNT,BSTHNT;
00060 INTEGER ARRAY HINT2,DUR2,TMP[0:31];
00070 INTEGER ARRAY CMAX2[0:16,0:31];
00080 INTEGER ARRAY BESTN,BESTP[0:7,0:31];
00085 INTEGER ARRAY CONTEX[0:63,0:63];
00087 INTEGER ARRAY PROB[0:63];
00090
00100 PROCEDURE MERGE;
00110 BEGIN "MERGE"
00120 INTEGER K;
00130 BESTP[7,N]←J; BESTN[7,N]←L;
00140 FOR K←7 STEP -1 UNTIL 1 DO IF BESTP[K,N]> BESTP[K-1,N] THEN BEGIN
00150 L←BESTN[K-1,N]; BESTN[K-1,N]←BESTN[K,N]; BESTN[K,N]←L;
00160 J←BESTP[K-1,N]; BESTP[K-1,N]←BESTP[K,N]; BESTP[K,N]←J; END ELSE DONE;
00170 END "MERGE";
00180
00190 PROCEDURE SORT;
00200 BEGIN
00210 INTEGER I,J,K;
00220 FOR I←0 STEP 1 UNTIL 6 DO
00230 FOR J←I+1 STEP 1 UNTIL 7 DO IF BESTP[I,N]< BESTP[J,N] THEN BEGIN
00240 K←BESTN[I,N]; BESTN[I,N]←BESTN[J,N]; BESTN[J,N]←K;
00250 K←BESTP[I,N]; BESTP[I,N]←BESTP[J,N]; BESTP[J,N]←K; END; END;
00260
00270 PROCEDURE SETUP;
00280 BEGIN "SETUP"
00290 INTEGER I,J,K,ISUM,JSUM,SUM;
00300 FOR I←0 STEP 1 UNTIL 63 DO BEGIN
00305 JSUM←0;
00310 FOR J←0 STEP 1 UNTIL 63 DO JSUM+CONTEX[I,J] LAND '777777;
00320 FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00322 K←((CONTEX[I,J] LAND '777777)*512)%JSUM;
00325 CONTEX[I,J]←(CONTEX[I,J] LAND '777777777)+(K LSH 27);
00330 END;
00340 END;
00350 FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00360 ISUM←0;
00370 FOR I←0 STEP 1 UNTIL 63 DO ISUM←CONTEX[I,J] LAND '777777;
00380 FOR I←0 STEP 1 UNTIL 63 DO BEGIN
00390 K←((CONTEX[I,J] LAND '777777)*512)%ISUM;
00400 CONTEX[I,J]←( CONTEX[I,J] LAND '777000777777)+(K LAND 18);
00410 END;
00420 END;
00430 END "SETUP";
00440
01000 IF CFLAG≠0 THEN BEGIN
01010 FOR J←0 STEP 1 UNTIL 7 DO BESTP[J,N]←0;
01020 M←0;
01030 SEGC2[N]←SEGC; DUR2[N]←SEGC2[N]-SEGC2[N-1];
01040 FOR I←0 STEP 1 UNTIL TABNUM-1 DO BEGIN
01050 IF NAMES[I]=0 THEN DONE;
01060 CMAX2[M,N]←CMAX[I];
01070 FOR J←0 STEP 1 UNTIL 7 DO BEGIN
01080 IF (J←LDB(POINT(9,CMAX[I],8)))>BESTP[7.N] THEN BEGIN
01090 L←OUT1[I]; MERGE; END;
01100
01110 IF (J←LDB(POINT(9,CMAX[I],17)))>BESTP[7,N] THEN BEGIN
01120 L←OUT2[I]; MERGE; END;
01130 IF (J←LDB(POINT(9,CMAX[I],26)))>BEST2[7,N] THEN BEGIN
01140 L←OUT3[I]; MERGE; END;
01150 IF (J←LDB(POINT(9,CMAX[I],35)))>BESTP[7,N] THEN BEGIN
01160 L←OUT4[I]; MERGE; END;
01170 M←M+1; END;
01180 END;
01190 IF FLAG=-1 THEN BEGIN
01200 L←0; TMP[L]←HINTS[DUR2[N]];
01210 FOR J← DUR2[N] STEP -1 UNTIL 0 DO BEGIN
01220 IF HINTS[J]≠NU THEN BEGIN
01230 IF HINTS[J]=TMP[L] THEN CNT[L]←CNT[L]+1 ELSE BEGIN
01240 L←L+1; CNT[L]←1; TMP[L]←HINTS[J]; END;
01250 BSTHNT←BSTCNT←0;
01260 FOR J←L STEP -1 UNTIL 0 DO
01270 IF CNT[J]>BSTCNT THEN BEGIN BSTCNT←CNT[J]; BSTHNT←TMP[J]; END;
01280 HINT2[N]←BSTHNT;
01290 J←HINTS[N-1]; K←BSTHNT; PROB[K]←PROB[K]+1;
01300 CONTEX[J,K]←CONTEX[J,K]+1;
01310 END;
01320 IF FLAG=1 THEN IF N>2 THEN BEGIN
01330 FOR I←0 STEP 1 UNTIL 7 DO
01340 FOR J←0 STEP 1 UNTIL 7 DO BEGIN
01350 K←BESTN[I,N-1]; L←BESTN[J,N];
01360 M←LDB(POINT(9,CONTEX[K,L],8)); N←LDB(POINT(9,CONTEX[K,L],17));
01370 BESTP[I,N-1]← BESTP[I,N-1]+(1-BESTP[I,N-1])*
01380 ((M*BESTP[J,N])-LDB(POINT(9,PROB[K],8)));
01390 BESTP[J,N]←BESTP[J,N]+(1-BESTP[J,N])*
01400 ((N*BESTP[I,N-1])-LDB(POINT(9,PROB[L],8)));
01410 END; SORT; END;
01420 N←N+1;
01430 END;
01440
01450 ************
01460 PUT IN SAY
01470 AT 401/2
01480 HINTS[HCNT]←J; HCNT←HCNT+1;